package com.hqj.demo01;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;

/**
 * 方法的使用-不确定参数练习02
 * @author HQJ
 * 新建一个学生类Student
 *  * 有一个属性List<String> list = new ArrayList<>();
 *  * 1、有添加学生的方法addStu()，参数为name(可写为不确定参数传值的方式);
 *  * 通过参数逐个保存学生的名字，
 *  * 且保存的学生名字不能相同
 *  * 当name为exit时，停止输入及保存
 *  * 2、有显示学生名字的方法showNames(),用于显示所有输入学生名字的方法。
 *  * 3、有方法isHave(),参数name,判断学生名字是否存在，
 *  * 存在返回true,否则返回false
 *  *
 *  * 测试类
 *  * 1、循环输入学生名字进行保存
 *  * 2、输出保存的学生名字
 *  * 3、输入一个名字判断改名字的学生是否存在
 */
public class Exercise02 {
    public static void main(String[] args) {
        Student s = new Student();
        Scanner scan = new Scanner(System.in);
        String names[] = new String[0];
        while(true) {
            System.out.println("请输入一个名字(exit:退出)");
            //接收一个输入的名字
            String name = scan.next();
            if("exit".equals(name)) break;
            names = Arrays.copyOf(names,names.length+1);
            names[names.length-1] = name;
            //s.addStu(name);
        }
        s.addStu(names);

        s.showName();
    }

}

class Student{
    List<String> list = new ArrayList<>();

    /**
     * 添加学生的方法
     * @param name
     */
    public void addStu(String ...name){
        //遍历参数
        for(String n:name){
            if(isHave(n)){
                continue;//跳过一次循环
            }
            //添加名字到集合
            list.add(n);
        }
    }

    /**
     * 循环输出输入的名字
     */
    public void showName(){
        System.out.println("输入的名称:");
        for(String name:list){
            System.out.print(name+"\t");
        }
    }

    /**
     * 判断字符串是否存在
     * @param name
     * @return
     */
    public boolean isHave(String name){
        boolean flat = false;//false为不存在
        //遍历集合，获取每一个元素与参数做对比，当相等，则表示存在为true,且停止循环
        for(String n:list){
            if(n.equals(name)){
                flat = true;
                break;//停止循环
            }
        }
        return flat;
    }
}